package cn.itcast.nems.studentrecord.service.settlement;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @author liyong
 * create: 2023-11-15 16:05:22
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SettlementData {
    /**
     * 班级执行价格;班级标准执行价格。如果有多个阶段，此字段也应只记录整个班级的执行价格，而不是单个阶段的执行价格。单位：分
     */
    private Integer price;

    /**
     * 应付金额;应付金额=原金额-优惠金额。所有阶段应付金额的合计！单位：分
     */
    private Integer amountDue;

    /**
     * 实际应付金额;应付金额-调整金额，但可根据实际业务情况调整。如，基于现有业务规则同学科转班就算有差价也无需补差价，此时该金额就等于上一个学籍结余的金额
     */
    private Integer actualAmountDue;

    /**
     * 已付金额;注：需要将订单整单金额分摊到学籍上。特别注意此金额需要给基于订单头行来计算。所有阶段金额的合计！调价单等订单之外的支付也需要合计！
     */
    private Integer paidAmount;

    /**
     * 转班转入金额;注：来自转班凭单，由其他学籍转进来金额。
     */
    private Integer transferFromAmount;

    /**
     * 退费金额;注：转班走也需记录该金额
     */
    private Integer refundAmount;

    /**
     * 要结算班级的ID
     */
    private Integer clazzId;

    /**
     * 开班日期
     */
    private LocalDate startDate;

    /*
     * 预计结课日期
     */
    private LocalDate predictionGraduationDate;

    /**
     * 进班日期;
     */
    private LocalDateTime inDate;

    /**
     * 出班结算日期;
     */
    private LocalDateTime settlementDate;

    /**
     * 是否待定班级, true: 是
     */
    private Boolean delayFlag;

    /**
     * 是否休学班级,true:是
     */
    private Boolean suspensionFlag;
}
